package com.rbw.service;

import javax.servlet.http.HttpServletRequest;

import com.rbw.controller.res.ListResult;
import com.rbw.model.TechBean;
import com.rbw.model.UserBean;

/**
 * 用户业务接口
 * 
 * @author cuihaidong
 *
 */
public interface UserService {
	/**
	 * 检查用户名是否存在
	 * 
	 * @param type
	 *            1：手机号，2：邮箱
	 * @param username
	 * @return
	 */
	UserBean existUser(int type, String username);

	/**
	 * 用户是否存在
	 * 
	 * @param sessionId
	 * @return
	 */
	UserBean existUser(String sessionId);

	/**
	 * 发送验证码
	 * 
	 * @param action
	 * @param type
	 * @param username
	 * @return
	 */
	boolean sendVCode(int action, int type, String username);

	/**
	 * 登录
	 * 
	 * @param sessionId
	 * @param username
	 * @param password
	 * @return
	 */
	UserBean login(String sessionId, String username, String password);

	/**
	 * 通过手机号注册
	 * 
	 * @param phoneNum
	 * @param pwd
	 * @param spwd
	 * @param vcode
	 * @return
	 */
	UserBean regByPhone(String sessionId, String phoneNum, String pwd, String spwd, String vcode);

	/**
	 * 通过邮箱注册
	 * 
	 * @param email
	 * @param pwd
	 * @param spwd
	 * @param vcode
	 * @return
	 */
	UserBean regByEmail(String sessionId, String email, String pwd, String spwd, String vcode);
	
	/**
	 * 修改用户信息
	 * @param request
	 * @param type
	 * @param value
	 * @param vcode 
	 * @return
	 */
	boolean editUser(HttpServletRequest request, int type, String value, String vcode);
	
	/**
	 * 提交需求
	 * @param userId
	 * @param telephone
	 * @param require
	 * @return
	 */
	boolean submitRequire(String userId, String telephone, String require);
	
	/**
	 * 重置密码
	 * @param request
	 * @param pwd
	 * @param newpwd
	 * @param snewpwd
	 * @return
	 */
	boolean resetPassword(HttpServletRequest request, String pwd, String newpwd, String snewpwd);
	
	/**
	 * 关注或取消关注对象
	 * @param request
	 * @param targetId
	 * @param type
	 * @return
	 */
	boolean favorite(HttpServletRequest request, String targetId, int type);
	
	/**
	 * 分页获取用户收藏列表
	 * @param sessionId
	 * @param page
	 * @param pageSize
	 * @return
	 */
	ListResult<TechBean> getFavorites(String sessionId, int page, int pageSize);
}
